// 自己写的代码：纯暴力，2/10
#include <bits/stdc++.h>
using namespace std;
// 三个顶点不共线：x+y>z,y+z>x,x+z>y
long long a, b, c, d, x, y, z, sum = 0;

int main()
{
	cin >> a >> b >> c >> d;
	for (int i = a; i <= b; i++)
	{
		x = i;
		for (int j = b; j <= c; j++)
		{
			y = j;
			for (int k = c; k <= d; k++)
			{
				z = k;
				if ((x + y > z) && (y + z > x) && (x + z > y))
					sum++;
			}
		}
	}
	cout << sum << endl;
	return 0;
}
/*参考题解
#include <bits/stdc++.h>
using namespace std;
// z的取值min(d,b+c)，将x+y看出一个定值，看x+y有多少种方案，
const int N = 1e5 + 7;
long long a, b, c, d, ans, x[N], sum[N];

int main()
{
	cin >> a >> b >> c >> d;
	for (int i = a; i <= b; i++) // x,y两边的可能性
	{
		for (int j = b; j <= c; j++)
		{
			x[i + j]++;
		}
	}
	for (int i = a + b; i <= b + c; i++) // 求数组的前缀和
	{
		sum[i] = sum[i - 1] + x[i];
	}
	for (int i = c; i <= min(d, b + c); i++) // 枚举z的取值，得到增量ans,即z<x+y的个数
	{
		ans += sum[b + c] - sum[i];
	}
	cout << ans << endl;
	return 0;
}*/